//
// IProcess.hh for caziac in /media/CIBOX USB/Zia/api/Module
// 
// Made by johannick renaud
// Login   <renaud_j@epitech.net>
// 
// Started on  Mon Sep  5 02:54:30 2011 johannick renaud
// Last update Fri Sep 16 22:33:28 2011 eugene-valentin ngontang-tchiadjie
//

#ifndef			IPROCESS_HH
# define		IPROCESS_HH

#include		"Priority.hh"
#include		"HandleRequest.hh"
#include		"HandleResponse.hh"

/**
 *	\file		IProcess.hh
 *	\date		Mon Sep  5 2011
 *	\author		RENAUD J.
 *	\version	1.0
 */

namespace		Caziac
{
  namespace		Module
  {

    /**
     *	\class		IProcess
     *	\brief		a process is a step method to execute in a certain order
     */

    class		IProcess
    {

    public:

      virtual		~IProcess(){}

      /**
       *	\param		req is an HandleRequest
       *        \param          resp is an HandleResponse
       *	\brief		set a process
       *	\warning	a main powerful function
       *	\return	        a boolean
       */

      virtual bool	process(Http::HandleRequest &req, Http::HandleResponse& resp) = 0;

      /**
       *	\brief		get the priority of the process between all the process
       *	\warning	trust this getter for order your process in your module
       *	\return	        the Priority of a process
       */

      virtual int	getPriority(void) const = 0;

    };
  }
}

#endif
